#include<stdio.h>
#include<stdlib.h>
#include "boolean.h"
#include "MODUL_SocialNetwork.h"

void InputAdmin(ListMember * G)
// Digunakan untuk memproses input yang diberikan sebagai admin
{
	char input[100], dum[100];
	bool x = false;
	printf("> ");scanf("%s ", input);
	while (!IsStringEqual(input, "exit"))
	{
		if(IsStringEqual(input, "load"))
		{
			scanf("%s", dum);
			printf("File %s telah diload dengan baik\n", dum);
			//AdminLoad(G, dum);
		}
		else if(IsStringEqual(input, "reload"))
		{
			//AdminReload(G);
			printf("Database telah direload dengan baik\n");
		}
		else if(IsStringEqual(input, "user"))
		{
			scanf("%s", dum);
			address1 A = SearchByEmail(*G, dum);
			//AdminChange(*G, A);
			currentUser = A;
			InputUser();
		}
		else if(IsStringEqual(input, "save"))
		{
			//AdminSave(*G);
			printf("File telah disave dengan baik\n");
		}
		else if(IsStringEqual(input, "adduser"))
		{
			infotype I;
			char B[100];
			int a,b,c;
			
			scanf("%s ", B);
			SetEmail(&I, B);
			printf("Email	: %s\n", B);
			
			scanf("\"%[^'\"']%c", B, &dum);
			SetNama(&I, B);
			printf("Nama	: %s\n", B);
			
			scanf("%d-%d-%d ", &a,&b,&c);
			SetTanggal(&(GetTanggal(I)), CreateTanggal(a,b,c));
			printf("Tanggal	: %d-%d-%d\n", a,b,c);
			
			scanf("\"%[^'\"']%c ", B, &dum);
			SetKotaAsal(&I, B);
			printf("KotaAsal: %s\n", B);
			
			scanf("\"%[^'\"']%c ", B, &dum);
			SetUNV(&I, B);
			printf("UNV	: %s\n", B);
			
			scanf("\"%[^'\"']%c", B, &dum);
			SetSMU(&I, B);
			printf("SMU	: %s\n", B);
			
			//AdminAddUser(G, I);
			printf("Penambahan user berhasil dilakukan\n");
		}
		else if(IsStringEqual(input, "modifyuser"))
		{
			char B[100];
			
			scanf("%s ", B);
			//AdminModUser(G, B);
			printf("modify user %s telah dilakukan dengan baik\n",B);
			/*
			address1 alamat = SearchByEmail(*G, B);
			if(alamat != Nil)
			{
				AdminModUser(G, )
				printf("\nPerubahan data pribadi %s sukses\n", B);
				PrintInfotype(Info(alamat));
			}
			else
			{
				printf("Tidak ditemukan email tersebut\n");
			}
			*/
		}
		else if(IsStringEqual(input, "deluser"))
		{
			char B[100];
			
			scanf("%s ", B);
			
			address1 alamat = SearchByEmail(*G, B);
			/*
			if(alamat != Nil)
			{
				DelP(G, InfoMember(alamat));
			}
			else
			{
				printf("Tidak ditemukan email tersebut\n");
			}
			*/
			
			printf("modify user %s telah dilakukan dengan baik\n", B);
		}
		else if(IsStringEqual(input, "list"))
		{
			char B[100];
			scanf("%s", dum);
			if(!IsStringEqual(dum, "#"))
			{
				scanf("%s", B);
				//AdminList(*G, GetKodeA(dum), GetKodeB(B));
				printf("melist %s %s\n", dum, B);
			}
			else
				x = true;
		}
		if(x)
			x = false;
		else
			scanf("%s", dum);
		printf("> ");scanf("%s ", input);
	}
	//AdminExit(*G);
}

void InputUser()
// Digunakan untuk memproses input yang diberikan sebagai user
{
	char input[100], dum[100];
	printf("%s >> ", GetEmail(InfoMember(currentUser)));scanf("%s ", input);
	while (!IsStringEqual(input, "close"))
	{
		if(IsStringEqual(input, "friend"))
		{
		}
		else if(IsStringEqual(input, "unfriend"))
		{
		}
		else if(IsStringEqual(input, "updatedata"))
		{
		}
		else if(IsStringEqual(input, "birthday"))
		{
		}
		else if(IsStringEqual(input, "same"))
		{
		}
		else if(IsStringEqual(input, "notfriendyet"))
		{
		}
		scanf("%s", dum);printf("%s >> ", GetEmail(InfoMember(currentUser)));scanf("%s ", input);
	}
	//UserClose();
}

void UserBirthday(Tanggal Today, int HariLagi)
{
	/*
	TemanMember(currentUser);
	InfoFriend
	NextFriend
	*/
	Tanggal X;
	//X = NextNDay(Today, HariLagi);
	
	address2 now = TemanMember(currentUser);
	while(now != Nil) {
		//kalo tanggalnya now itu 
		if(( !IsDateMore (GetTanggal(InfoMember(InfoFriend(now))), X )) && (!IsDateLess (GetTanggal (InfoMember (InfoFriend (now))), Today))) {
			PrintInfotype(InfoMember(InfoFriend(now)));
		}
		now = NextFriend (now);
	}
}

void UserNotFriend()
// {I.S : Graf Terdefinisi}
// {F.S : Tercetak ke layar list teman level 2, 3 yang bukan list level 1}
{
	Queue Q;
	Add(&Q, currentUser);
	while(!IsEmpty(Q))
	{
		address1 now;
		Del(&Q, &now);
		
		address2 temen = TemanMember(now);
		while (temen != Nil)
		{
			if(BelumDiproses(Info(temen)))
			{
				if(!IsFriend(currentUser, temen))
				{
					printf("%s /t %s\n", GetEmail(InfoMember(temen)), GetNama(InfoMember(temen)));
					Add(&Q, temen);
				}
			}
			temen = NextFriend(temen);
		}
	}
}

void UserSame(int a)
// {I.S : Graf Terdefinisi}
// {F.S : Tercetak ke layar list teman level 2, 3 yang bukan list level 1}
{
	Queue Q;
	Add(&Q, currentUser);
	while(!IsEmpty(Q))
	{
		address1 now;
		Del(&Q, &now);
		
		address2 temen = TemanMember(now);
		while (temen != Nil)
		{
			if(BelumDiproses(Info(temen)))
			{
				Add(&Q, temen);
				if(IsStringEqual(GetKota(InfoMember(temen)), GetKota(InfoMember(currentUser))))
				{
					
				}
				/*if(!IsFriend(currentUser, temen))
				{
					printf("%s /t %s\n", GetEmail(InfoMember(temen)), GetNama(InfoMember(temen)));
				}*/
			}
			temen = NextFriend(temen);
		}
	}
}

ListMember S;
int main()
{
	InputAdmin(&S);
	return 0;
}
